public class Solution141 {

    static class ListNode {
        int val;
        ListNode next;

        ListNode(int x) {
            val = x;
            next = null;
        }
    }

    public boolean hasCycle(ListNode head) {
        ListNode fast=head,slow=head;
        do{
            if (fast==null || fast.next==null){
                return false;
            }
            fast=fast.next.next;
            slow=slow.next;
        }while (fast!=slow);
        return true;
    }

    public static void main(String[] args) {
        ListNode listNode1=new ListNode(3);
        ListNode listNode2=new ListNode(2);
        ListNode listNode3=new ListNode(0);
        ListNode listNode4=new ListNode(-4);
        listNode1.next=listNode2;
        listNode2.next=listNode3;
        listNode3.next=listNode4;
        listNode4.next=listNode2;
        System.out.println(new Solution141().hasCycle(listNode1));
    }
}
